package com.xbts.system.module.payment.service;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xbts.common.core.domain.CnWalletLog;
import com.xbts.common.enums.ShoppingCarEnums;

import java.math.BigDecimal;
import java.util.List;

/**
 * 用户钱包日志Service接口
 * 
 * @author xbts
 * @date 2023-08-04
 */
public interface ICnWalletLogService  extends IService<CnWalletLog> {

    /**
     * 查询用户钱包日志列表
     *
     * @param cnWalletLog 用户钱包日志
     * @return 用户钱包日志集合
     */
     List<CnWalletLog> selectCnWalletLogList(CnWalletLog cnWalletLog);

    /**
     * 查询用户钱包日志
     *
     * @param id 用户钱包日志主键
     * @return 用户钱包日志
     */
     CnWalletLog selectCnWalletLogById(String id);


    /**
     * 新增用户钱包日志
     *
     * @param cnWalletLog 用户钱包日志
     * @return 结果
     */
     boolean insertCnWalletLog(CnWalletLog cnWalletLog);

    /**
     * 修改用户钱包日志
     *
     * @param cnWalletLog 用户钱包日志
     * @return 结果
     */
     boolean updateCnWalletLog(CnWalletLog cnWalletLog);

    /**
     * 批量删除用户钱包日志
     *
     * @param ids 需要删除的用户钱包日志主键集合
     * @return 结果
     */
     boolean deleteCnWalletLogByIds(List<String> ids);

    /**
     * 删除用户钱包日志信息
     *
     * @param id 用户钱包日志主键
     * @return 结果
     */
     boolean deleteCnWalletLogById(String id);

    /**
     * 更新用户余额
     * @param userId 用户id
     * @param price 支付/扣减金额
     * @param paymentMethod 支付方式
     * @param receivableNo 第三方流水
     * @param shoppingCarEnums
     * @param sn 订单号
     */
    void updateUserBalanceAndLog(long userId, BigDecimal price, String paymentMethod, String receivableNo, ShoppingCarEnums shoppingCarEnums, String sn, String isAutoRenew);

    /**
     * 统计用户钱包日志
     * @param cnWalletLog
     * @return
     */
    JSONObject statisticsWalletLogList(CnWalletLog cnWalletLog);
}
